<?php
namespace Swiftx\Interfaces\Bundle;
/**
 * 模块暂存区
 * @package Swiftx\Bundle\Console
 */
interface Storage {

    /**
     * 设置缓存目录
     * @param string $path
     */
    public function setCacheDir(string $path);

    /**
     * 设置构建目录
     * @param string $path
     */
    public function setBuildDir(string $path);

    /**
     * 设置资源目录
     * @param string $path
     */
    public function setResourceDir(string $path);

    /**
     * 设置资源映射
     * @param string $uri
     * @param string $base
     */
    public function setResourceMap(string $uri, string $base);

    /**
     * 生成资源URI
     * @param string $file
     * @param string[] ...$appends
     * @return string
     */
    public function resourceUri(string $file, string ...$appends):string;

    /**
     * 获取构建路径
     * @param string $value
     * @return string
     */
    public function getBuildPath(string $value):string;

    /**
     * 生成构建文件
     * @param string $path
     * @param string $content
     */
    public function makeBuildFile(string $path, string $content);

    /**
     * 删除构建文件
     * @param string $path
     */
    public function unlinkBuildFile(string $path);

    /**
     * 读取构建内容
     * @param string $path
     * @return string
     */
    public function readBuildFile(string $path):string;

    /**
     * 获取缓存路径
     * @param string $value
     * @return string
     */
    public function getCachePath(string $value):string;

    /**
     * 生成缓存文件
     * @param string $path
     * @param string $content
     */
    public function makeCacheFile(string $path, string $content);

    /**
     * 删除缓存文件
     * @param string $path
     */
    public function unlinkCacheFile(string $path);

    /**
     * 读取缓存内容
     * @param string $path
     * @return string
     */
    public function readCacheFile(string $path):string;

}